package com.comment.pojo.domain.logic.core;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;

import java.io.Serializable;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

/**
 * 武将星级表 PS：成长值使用的时候需要除以100影响到的属性值，进行四舍五入取整（满0.5进位）(CoreHeroStar)表实体类
 *
 * @author cxy
 * @since 2024-08-05 16:14:02
 */
@ApiModel("武将星级表 PS：成长值使用的时候需要除以100影响到的属性值，进行四舍五入取整（满0.5进位）")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@EqualsAndHashCode(callSuper = true)
@SuppressWarnings("serial")
public class CoreHeroStar extends Model<CoreHeroStar> {// swagger2,mybatis-plus
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 生成实体字段
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("武将升星表id")
    private Long id;

    @ApiModelProperty("武将id")
    private Long heroId;

    @ApiModelProperty("星级")
    private Integer star;

    @ApiModelProperty("攻击成长")
    private Integer attGrowth;

    @ApiModelProperty("策略成长")
    private Integer magicGrowth;

    @ApiModelProperty("防御成长")
    private Integer defGrowth;

    @ApiModelProperty("先攻成长")
    private Integer speedGrowth;

    @ApiModelProperty("统率成长")
    private Integer commandGrowth;

    @ApiModelProperty("升星信物消耗")
    private String levelUpCost;

    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 序列化版本号
    @TableField(exist = false)
    private static final long serialVersionUID = -14707809393863526L;

    /////////////////////////////////////////////////////////////////////////////////////////////////////////// 获取主键值
    @Override
    public Serializable pkVal() {
        return this.id;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////  初始化解析
    @TableField(exist = false)
    private Long propId;
    @TableField(exist = false)
    private Long propNum;
    public CoreHeroStar init() {
        this.propId = 0L;
        this.propNum = 0L;
        if (this.levelUpCost.contains("&")){
            String[] parts = this.levelUpCost.split("&");
            String propIdString = parts[0];
            String propNumString = parts[1];
            this.propId = propIdString.isEmpty() ? 0 : Long.parseLong(propIdString);
            this.propNum = propNumString.isEmpty() ? 0 : Long.parseLong(propNumString);
        }
        return this;
    }
}

